C++ 类、对象,及其调用方法

声明:本人是一名iOS开发者,接触C++已经很久了,之前只能是调用别人写好的方法,但不知道怎么去声明及其实现这些方法,现在是要好好学习C++,把每天学的东西及其心的一一记录在blog里面,互相学习,有些观点或者思想不太对,请多多指点;

C++的类和OC的类可以理解为同一个类,但是OC的类只包含一个类,例:Preson.h,使用的时候只能生成一个Person的类,但是C++里面就不一样了,拟定一个Person.hpp,然后在里面可以声明很多的类,接下来我在代码展示;

Student.hpp文件

#ifndef Student_hpp
#define Student_hpp

#include <stdio.h>

class Student
{
    public:
        void setDate(char);//设置日期
    private:
        int year;
        int month;
        int day;
        bool pass;
        bool checkFormat(char);//验证日期输入格式
        void validate();//验证日期数值有效性
        bool leapYear(int);//闰年判断
};

#endif /* Student_hpp */

Student.cpp文件

#include "Student.hpp"

/**
 *  设置日期的方法
 *
 *  @param a 日期
 */
void Student::setDate( char a)
{
    printf("%c\n",a);
}


使用方法,也就是main.cpp文件

#include <iostream>

#include "Student.hpp"

int main(int argc, const char * argv[]) {
    
    //学生
    Student student;
    
    //任意一个字符串
    char date = '1';
    
    //调用setDate方法,记住是.,和OC不同
    student.setDate(date);
    
    return 0;
}

然后在控制台就可以输出1,这就是一个完整的类,对象,调用对象方法的基本流程,我写的不太规范,初次写C++代码,不知道规范,还请大家多多指教;

如果转载请注明转于:AirZilong的博客

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python可以通过扩展模块来调用C++对象。具体的实现方法包括以下几个步骤: 1. 编写C++及其方法,并将其编译为动态链接库(DLL)或共享库(SO)。 2. 使用Python的C API,即Python提供的C语言接口,来调用C++库中的方法。 3. 在Python中编写扩展模块,将C++方法封装成Python可调用的函数和对象。 下面是一个简单的示例代码,演示了如何在Python中调用C++方法: ```c++ // MyClass.h class MyClass { public: MyClass(int x); int getX(); private: int x_; }; // MyClass.cpp MyClass::MyClass(int x) : x_(x) {} int MyClass::getX() { return x_; } ``` ```python // mymodule.cpp #include <Python.h> #include "MyClass.h" static PyObject* createObject(PyObject* self, PyObject* args) { int x; if (!PyArg_ParseTuple(args, "i", &x)) { return NULL; } MyClass* obj = new MyClass(x); return PyCapsule_New(obj, "MyClass", NULL); } static PyObject* getX(PyObject* self, PyObject* args) { PyObject* obj_capsule; if (!PyArg_ParseTuple(args, "O", &obj_capsule)) { return NULL; } MyClass* obj = (MyClass*)PyCapsule_GetPointer(obj_capsule, "MyClass"); int x = obj->getX(); return PyLong_FromLong(x); } static PyMethodDef mymodule_methods[] = { {"createObject", createObject, METH_VARARGS, "Create a new MyClass object."}, {"getX", getX, METH_VARARGS, "Get the x value of a MyClass object."}, {NULL, NULL, 0, NULL} }; static struct PyModuleDef mymodule_module = { PyModuleDef_HEAD_INIT, "mymodule", "A Python module that wraps a C++ class.", -1, mymodule_methods }; PyMODINIT_FUNC PyInit_mymodule(void) { return PyModule_Create(&mymodule_module); } ``` 使用g++编译上述代码: ``` g++ -shared -fPIC MyClass.cpp mymodule.cpp -o mymodule.so -I/usr/include/python3.6m -lpython3.6m ``` 然后在Python中就可以调用MyClass对象了: ```python import mymodule obj = mymodule.createObject(42) x = mymodule.getX(obj) print(x) # 输出: 42 ``` 这是一个简单的示例,实际的应用中可能需要更加复杂的数据型和方法。需要注意的是,C++代码和Python代码之间的数据转换可能比较繁琐,需要仔细处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值