C++的某个类在构造函数中,不能调用自己的成员函数吗
本帖最后由 Ryan_Li 于 2020-11-6 21:26 编辑C++的某个类在构造函数中,不能调用自己的成员函数吗
#include <iostream>
using namespace std;
class Person{
public:
Person()
{
cout<<"Person默认构造函数的调用"<<endl;
}
Person(int age){
cout<<"Person有参构造函数的调用"<<endl;
m_Age = age;
}
Person(const Person & p){
cout<<"Person拷贝构造函数的调用"<<endl;
m_Age = p.getAge(); //这里报错!!!!!!!!!!!!!!!!!!!
}
~Person()
{
cout<<"Person析构函数调用"<<endl;
}
int getAge(){
return m_Age;
}
private:
int m_Age;
};
void test01(){
Person p1(10);
Person p2(p1);
cout<<"p2 age:"<<p2.getAge()<<endl;
}
int main(){
test01();
system("pause");
return 0;
}
代码如上,拷贝构造函数中 m_Age = p.getAge(); 这里报错
19 20 D:\学习\C++\49 类和对象 拷贝构造函数调用时机.cpp passing 'const Person' as 'this' argument of 'int Person::getAge()' discards qualifiers [-fpermissive] 19 20 D:\学习\C++\49 类和对象 拷贝构造函数调用时机.cpp passing 'const Person' as 'this' argument of 'int Person::getAge()' discards qualifiers [-fpermissive] #include <iostream>
using namespace std;
class Person {
public:
Person()
{
cout << "Person默认构造函数的调用" << endl;
}
Person(int age) {
cout << "Person有参构造函数的调用" << endl;
m_Age = age;
}
Person( Person& p) { //这里参数类型不对,把const去掉,就可以转换了
cout << "Person拷贝构造函数的调用" << endl;
m_Age = p.getAge(); //这里报错!!!!!!!!!!!!!!!!!!!
}
~Person()
{
cout << "Person析构函数调用" << endl;
}
int getAge() {
return m_Age;
}
private:
int m_Age;
};
void test01() {
Person p1(10);
Person p2(p1);
cout << "p2 age:" << p2.getAge() << endl;
}
int main() {
test01();
system("pause");
return 0;
}
见第十三行改动及注释
满意的话记得设为最佳答案 这里出现错误的原因应该是 const 对象不能调用非const的方法吧。
所以,把getAge 后面加上const就好了
int getAge() const {
return m_Age;
}
页:
[1]