c const
< 返回列表时间: 2020-06-28来源:OSCHINA
file1.cpp int ext;
file2.cpp extern const int ext2=12;
apple.cpp class apple { private: int people[100]; public: apple(int i); const int apple_number; void take(int num) const; int add(int num); int add(int num) const; int getCount() const; };
const.cpp #include <iostream> #include "apple.cpp" using namespace std; // construct; apple::apple(int i) :apple_number(i) {} // int apple::add(int num) { take(num); return 0; } int apple::add(int num) const { take(num); return 0; } void apple::take(int num) const { cout << "take fun" << num << endl; } int apple::getCount() const { take(1); return apple_number; } void f(const int i) { // 用于限定不可以修改参数. //i++; } extern int ext; // 特别注意这个, 在另外一个文件中, 是通过extern 和const 修饰的, // 外部 extern const int ext2=12; // extern int ext2; 报错, // const int ext2; 报错. // extern const int ext2; 正常, // 有初始值. 外部 const int ext2=12 // extern int ext2; 报错, // const int ext2; 报错. // extern const int ext2; 报错, // 无初始值. 外部 const int ext2; // extern int ext2; 报错, // const int ext2; 报错. // extern const int ext2; 报错 extern const int ext2; // 总结: // 1 在使用了const后, 必须显示的申明为 extern ,在跨文件的模式下, 说明 const 是一个局部的. // 2 在使用了const后, 必须显示的赋值. // 3 在使用了const后 ,使用的地方必须类型一致. int main() { const int a = 1 + 1; cout << ext + 10 << endl; cout << ext2 + 12 << endl; const int b = 10; //b = 0; const string s = "helloworld"; cout << s << endl; const int* ptr = &a; ptr = &b; // *ptr = 10; 这个是错误的, 如果这么写了, 实际修改的是, 指针所指对象的值 , // 说白了, 就是int对象是不可以修改的, const int p = 10; const void* q = &p; //void* m = &p; 类型不匹配, 申明不可以通过q 来修改p的值. 如果是这样就容易被修改了, int num = 10; int num1 = 12; int* const ptr1 = # int* t = # //ptr1 = &num1; 这个错误说明了, 该指针的值是不可以修改的, *ptr1 = 11; //说明指针所指对象的值是可以修改的, cout << *ptr1 << endl; // 如上所示, 重点修饰的是指针, // 总结 : 如果const在*的左边, 则说明指针指向的对象的值不可以修改, // 如果const在* 的右边, 则说明指针本身是不可以被修改的, apple app(2); cout << app.getCount() << endl; app.add(10); const apple appb(3); appb.add(100); return 0; return 0; }
博主的原文链接 : https://github.com/Light-City/CPlusPlusThings/tree/master/basic_content/const ,非常感谢博主的分享.
热门排行