C\C++每日练习第二贴,今天也要加油呀!!!
#include <iostream>#include "circle.h"
using namespace std;
//class point
//{
//public:
// void setx(int x)
// {
// m_x = x;
// }
// int getx()
// {
// return m_x;
// }
// void sety(int y)
// {
// m_y = y;
// }
// int gety()
// {
// return m_y;
// }
//private:
// int m_x;
// int m_y;
//};
//class circle
//{
//public:
// void setr(int r)
// {
// m_r = r;
// }
// int getr()
// {
// return m_r;
// }
// void setcenter(point center)//获取圆心
// {
// mc_center = center;
// }
// point getcenter()
// {
// return mc_center;
// }
//
//private:
// int m_r;
// point mc_center;
//};
//全局函数
void isincircle(circle &c,point &p)
{
//两点之间的距离 平方
int distance=
(c.getcenter().getx() - p.getx())* (c.getcenter().getx() - p.getx()) +
(c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety());
int rdistance = c.getr() * c.getr();
if (distance==rdistance)
{
cout << "点在圆上" << endl;
}
else if(distance>rdistance)
{
cout << "点在圆外" << endl;
}
else
{
cout << "点在圆内" << endl;
}
}
int main()
{
//创建圆
circle c;
point center;
center.setx(10);
center.sety(0);
c.setcenter(center);
//创建点
point p;
p.setx(10);
p.sety(12);
isincircle(c, p);
system("pause");
return 0;
} “//创建圆
circle c;
point center;
center.setx(10);
center.sety(0);
c.setcenter(center);
//创建点
point p;
p.setx(10);
p.sety(12);
isincircle(c, p);”这个circle的半径是多少呢 #include <iostream>
using namespace std;
class person
{
public:
/*构造函数,没有返回值 不用写VOID
函数名 要和类名相同
构造函数可以有参数 可以发生重载
创建对象的时候构造函数会自动调用 而且只调用一次*/
person()
{
cout << "构造函数:" << endl;
}
/*/析构函数 进行清理的操作
没有返回值 不写void 函数明和类名相同 在名称前加~
析构函数不可以有参数 不可以发生重载
对象在销毁前 会自动调用析构函数 而且只会调用一次*/
~person()
{
cout << "析构函数:" << endl;
}
};
void test01()
{
person p;
}
int main()
{
test01();
//person p;
system("pause");
return 0;
} Eaglecad 发表于 2021-2-11 14:16
“//创建圆
circle c;
point center;
你好 这个圆和点 是分别两个class 为circle 和pointcircle调用了point在注释段里 因为我 分别做了头文件这个步骤没打出来 你把代码注释去掉就可以看到了
//private:
// int m_r;
// point mc_center;
//}; #include <iostream>
using namespace std;
class person
{
public:
person()
{
cout << "默认构造函数" << endl;
}
person(int a)
{
age = a;
cout << "有参数构造函数" << endl;
}
int age;
//拷贝构造函数
person(const person &p)
{
age = p.age+20;
cout << "拷贝构造函数" << endl;
}
~person()
{
cout << "构析函数" << endl;
}
};
void test01()
{
//括号法
person p;//默认构造函数调用 不要打小括号
person p2(10);//有参构造函数
person p3(p2);//拷贝函数的调用
cout<<"P2的年龄为"<<p2.age << endl;
cout << "P3的年龄为" << p3.age << endl;
//显示法
person p4;
person p5 = person(10);//有参构造
person p6 = person(p5);//拷贝构造
//person(20); //匿名对象 执行结束后 系统回收person(p3) 不能成立
//隐示法
person p7 = 10;//person p7=person(10)
}
int main()
{
test01();
} #include <iostream>
using namespace std;
class person
{
public:
person()
{
cout<<"person 的默认构造函数"<<endl;
}
person(int age) //如果写了有参构造函数 编辑器就不提供默认构造函数
{
m_age = age;
cout<<"person 的有参构造函数"<<endl;
}
person(const person& p) //不写 拷贝构造函数编辑器会去写一个如果我们写了拷贝构造函数 编辑器就不提供其他普通构造函数
{
cout << "person 的拷贝构造函数" << endl;
m_age = p.m_age;
}
~person()
{
cout << "person 的析构函数" << endl;
}
int m_age;
};
void test01()
{
person p;
p.m_age = 18;
person p2(p);
cout<<"P2的年龄为 "<<p2.m_age <<endl;
}
void test02()
{
person p1(20);
person p2(p1);
cout << "P2的年龄为 " << p2.m_age << endl;
}
void dowork(person p)
{
}
void test03()
{
person p;
dowork(p);
}
person dowork2()
{
person p1;
return p1;
}
void test04()
{
person p = dowork2();
}
int main()
{
test04();
return 0;
} #include <iostream>
using namespace std;
class person
{
public:
person()
{
cout<<"person 的默认构造函数调用"<<endl;
}
person(int age,int height)
{
m_age = age;
m_height = new int(height);
cout << "person 的有参构造函数调用" << endl;
}
person(const person &p)
{
cout << "person 的拷贝函数调用" << endl;
m_age = p.m_age;//编译器默认实现的就是这个代码
m_height=new int(*p.m_height);
}
~person()
{
if (m_height!=NULL)
{
delete m_height;
m_height = NULL;
}
cout << "person 的析构函数调用" << endl;
}
int m_age;
int *m_height;
};
void test01()
{
person p(10, 160);
person p1(p);
cout<<p1.m_age<<endl;
cout << *p1.m_height << endl;
}
int main()
{
test01();
return 0;
} #include <iostream>
using namespace std;
class person
{
public:
person(int a,int b,int c)
{
m_a = a;
m_b = b;
m_c = c;
}
int m_a;
int m_b;
int m_c;
};
class person2
{
public:
person2() :a_a(10), a_b(20), a_c(30)
{
}
int a_a;
int a_b;
int a_c;
};
class person3
{
public:
person3(int a,int c,int b) :b_a(a), b_b(b), b_c(c)
{
}
int b_a;
int b_b;
int b_c;
};
void test01()
{
person p1(10,20,30);
cout <<p1.m_a << endl;
}
void test02()
{
person2 p;
cout << p.a_b << endl;
}
void test03()
{
person3 p2(11,12,13);
cout << p2.b_a << endl;
}
int main()
{
test01();
test02();
test03();
return 0;
} #include <iostream>
using namespace std;
class phone
{
public:
phone(string pname)
{
cout << "phone 的构造函数调用" << endl;
m_pname = pname;
}
string m_pname;
};
class person
{
public:
person(string name,string pname):m_name(name),m_phone(pname)
{
cout<<"person 的构造函数调用"<<endl;
}
string m_name;
phone m_phone;
};
void test01()
{
person p("张三","苹果");
cout << p.m_name <<"拿着" <<p.m_phone.m_pname << endl;
}
int main()
{
test01();
return 0;
} // 静态成员函数 所有对象共享同一个函数 静态成员函数只能访问静态成员变量
#include <iostream>
using namespace std;
class person
{
public:
static void func()
{
m_a = 100;//静态成员函数可以访问静态的成员变量
//m_c = 101; 静态成员函数不可以访问非静态的成员变量 无法区分到底是那个对象的 m_c属性
cout<<"func1静态函数调用"<<endl;
}
static int m_a; //静态变量是属于共享的
static float m_b;//静态变量必须在类内声明 在类外初始化。
double m_c;
//静态成员函数也是有访问权限的
private:
static void func2() //类外访问不到私有成员静态函数
{
cout << "func2静态函数调用" << endl;
}
};
int person::m_a = 0;
void test()
{
//通过对象访问
person p;
p.func();
//通过类名访问
person::func();
}
int main()
{
test();
return 0;
}