参考:
《Python编程:从入门到实践》
《C++ Primer》第五版
文章目录
- class
- 一、创建类
- Python
- self的解释
- 注意
- Cpp
- 二、创建实例
- Python
- Cpp
- 运算符
- 三目运算符
- Python
- C++
- 容器
- 一、容器定义
- python
- C++
- 二、应用
- python
- C++
- C++中的::
- 一、在类外定义类内函数
- 二、友元是类中成员函数的时候
- 三、类的继承中访问父子类的同名变量或者函数
- 四、容器中的迭代器
- 五、纯虚析构
- 六、文件操作的程序中好像也有
- 七、访问命名空间中的名字
class
一、创建类
Python
class Dog()
def _init_(self,name,age)
self.name = name
self.age = age
def sit(self)
print(self.name.init() + "is now sitting")
def roll_over(self)
print(self.name.init() + "rolled over")
变化过程:实参(年龄、名字)→形参(name、age)→变量(self.name、self.age)
self的解释
1、self会自动传入实参,位于所有的参数的最前面(所以只用提供后面的值)
2、一个指向实例本身的引用,能让实例访问类中的属性和方法
注意
类的名称第一个字母大写,括号内为空;变量的名称的首字母一般小写
1、_init_()方法开头结尾有 _ ,可以避免发生名称冲突
2、Python自动运行init方法
Cpp
class Dog
{
public:
sit()
{
cout<<name<<"is now sitting"<<endl;//name可以换成this->name
}
roll over()
{
cout<<name<<"rolled over"<<endl;//name可以换成this->name
}
public:
string name;//默认是私有权限
int age;
}
二、创建实例
Python
# 创建实例
my_dog = Dog('whillie',6)
# 调用属性
print("My dog's name is" + my_dog.name.title() + ".") # title:让首字母变大写
print("My dog is" + str(my_dog.age) + "years old")
# 调用方法
my_dog.sit()
my_dog.roll_over()
Cpp
// 创建实例
Dog my_dog;
my_dog.name = "whillie" ;
my_dog.age = 6;
//调用属性
cout<<"My dog's name is" <<my_dog.name<<"."<<endl;
cout<<"My dog is"<<my_dog.age<<"years old"<<endl;
//调用行为
my_dog.sit();
my_dog.roll_over();
运算符
三目运算符
Python
exp1 if condition else exp2
condition :判断条件
exp1 和 exp2 是两个表达式
如果 condition 成立(结果为真),就执行 exp1,否则就执行 exp2
C++
condition ? exp1 : exp2
condition是表达式的条件,成立时(True)执行exp1,否则执行exp2
容器
一、容器定义
python
list[ parameter 1 : parameter 2 :parameter 3 ]
parameter 1:是开始索引的下标,可以省略(默认0)
parameter 2:结束索引的下标,可以省略(默认为最大值,但是不包括最大值)
parameter 3:步长(一般直接省略值和前面的:,默认为1)
C++
vector<type> v1;
type:是定义的容器里面的数值的类型
二、应用
python
切片:
list = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
# 以下为例子
list[1] = 1
# 注意这里正着索引,第一个是0;当反过来索引时候,第一个是1
list[-1] = 9
list[1:] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list[:5] = [0, 1, 2, 3, 4]
list[::-1] = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
C++
常用函数:
v1.begin();//开始元素的地址
v1.end();//结束元素的地址
v1.push_back(element);//从尾部插入一个元素
v1.pop_back(element);//从尾部删除一个元素
v1.empty();//bool值
v1.size();//返回元素个数
v1.capacity();//容器的容量
v1.front();//返回容器第一个元素
v1.end();//返回容器最后一个元素
v1.reserve(int len);//预留容器位置
v1[i];//下标索引容器中的值
C++中的::
一、在类外定义类内函数
1、先定义一个类中的函数
class Building
{
public:
(函数返回值) Building(); //重名可析构
};
2、在类外定义类内函数
(函数返回值) Building::Building()
{
...
}
二、友元是类中成员函数的时候
1、在类中定义一个函数
class goodgay
{
public:
void visit();
};
2、在另一个类中定义友元是类中的成员数(友元也可以是全局函数和类)
class building
{
friend void goodgay::visit();
};
三、类的继承中访问父子类的同名变量或者函数
1、定义父子类的同名变量
class base
{
public:
int m_a
};
class son::public base
{
public:
int m_a
};
2、分别访问子类和父类中的变量方式
//方式一 对象访问
son s; //先定义一个对象
s.m_a = 20; //未说明是子类中变量
s.base::m_a = 30; //如果是父类标上base::
//方式二 类名访问
son::m_a = 20;
son::base::m_a = 20;
四、容器中的迭代器
1、容器迭代器的定义
vector<int>::iterator //其中是<>里的类型是(*it)解出来的数据类型
2、举例 打印容器内容函数
void printVector(vector<int>& v)
{
for(vector<int>::iterator it = v.begin();it != v.end();it++)
{
cout << *it << " ";
}
cout << endl;
}
五、纯虚析构
因为用的不咋多所以在此不再详细说明
六、文件操作的程序中好像也有
七、访问命名空间中的名字
std::cout