C++基础知识—常量和常成员函数
来源:互联网 发布:mac 切换 只有windows 编辑:程序博客网 时间:2024/06/07 15:42
1.常量:程序运行的整个过程中,其值始终不可改变的量,const int a = 100;同int const a = 100。
2.指向常量的指针:const char *c = "abc"; 与 char const *c = "abc";相同,const的修饰符是char。
c[2] = 'd';//F 不能修改指向的常量
c = "def";//T数组名退化为指针,指针的值可以改变,指向另一个变量
3.常指针: char *const c = "abc";//指针本身不可改变,所指数据可以改变,可以看成char (*const) c;const的修饰符是*指针。
c = "def";//F
c[2] = 'd';//T
4.指向常量的常指针:const char* const c = "abc";
c = "def";//F
c[2] = 'd';//F
5.一个指向常量的指针可以指向一个非常量对象,如2中line3。
6.一个指向非常量的指针不可以指向常量对象。
7.常成员函数:常成员函数是指由const修饰符修饰的成员函数,在常成员函数中不得修改类中的任何数据成员的值,可以理解为只读函数,
通常我们用的各种get的函数应该声明为const成员函数。
class classname {
public:
int fun() const;
.....
}
8..常成员函数中不能调用类中非常成员函数,有可能会简洁修改数据成员。
9.常对象,只能通过对象调用const成员函数,当然构造函数和析构函数是可以用的。
10.类的非静态数据成员可以声明为mutable,然后就可以被该类的常量成员函数(当然也包括非常量成员函数)修改。
11.常成员函数的const是修饰成员函数的this指针,静态成员变量不属于任何对象,静态成员没有this指针,所以可以用常成员函数修改。
2.指向常量的指针:const char *c = "abc"; 与 char const *c = "abc";相同,const的修饰符是char。
c[2] = 'd';//F 不能修改指向的常量
c = "def";//T数组名退化为指针,指针的值可以改变,指向另一个变量
3.常指针: char *const c = "abc";//指针本身不可改变,所指数据可以改变,可以看成char (*const) c;const的修饰符是*指针。
c = "def";//F
c[2] = 'd';//T
4.指向常量的常指针:const char* const c = "abc";
c = "def";//F
c[2] = 'd';//F
5.一个指向常量的指针可以指向一个非常量对象,如2中line3。
6.一个指向非常量的指针不可以指向常量对象。
7.常成员函数:常成员函数是指由const修饰符修饰的成员函数,在常成员函数中不得修改类中的任何数据成员的值,可以理解为只读函数,
通常我们用的各种get的函数应该声明为const成员函数。
class classname {
public:
int fun() const;
.....
}
8..常成员函数中不能调用类中非常成员函数,有可能会简洁修改数据成员。
9.常对象,只能通过对象调用const成员函数,当然构造函数和析构函数是可以用的。
10.类的非静态数据成员可以声明为mutable,然后就可以被该类的常量成员函数(当然也包括非常量成员函数)修改。
11.常成员函数的const是修饰成员函数的this指针,静态成员变量不属于任何对象,静态成员没有this指针,所以可以用常成员函数修改。
0 0
- C++基础知识—常量和常成员函数
- 常量对象、常量成员函数和常引用
- [基本] 常量对象和常成员函数问题
- 常对象成员和常成员函数
- 常成员:常数据成员和常成员函数
- [C++学习笔记]--常量对象、常量成员函数和常引用
- 北大 C++ 3.8 常量对象、常量成员函数和常引用
- 常成员函数函数和返回值为常量的函数
- c++ 常成员函数 和 常对象
- 常对象和常成员函数
- C++ 常对象和常成员函数
- 【学习C++】C++常成员函数
- 常成员函数和mutable的恩恩怨怨
- 用conat修饰的类成员——常成员函数、常成员数据、常引用
- C++ 关于静态成员函数和常成员函数
- c++常对象和常成员函数详解
- 常对象 常成员函数
- 常对象及常成员及静态数据成员和静态成员函数的学习内容。
- sphinx的安装使用
- OpenCV成长之路3:把图片加载并且显示
- Java加密技术(十一)——双向认证
- JAVA SE 8 学习笔记(三)使用lambda编程
- sql server 树形表的一些操作
- C++基础知识—常量和常成员函数
- 4、Java的继承
- js 事件机制
- 欢迎使用CSDN-markdown编辑器
- Android Dev Intro - Android SurfaceTexture
- iOS开发中@interface 和 @implementation区别, @property 和@synthesize区别
- ListView的setSelection()方法
- CSS 高级常用知识
- STM8 GPIO模式